package cn.iocoder.yudao.module.product.selection.pojo.po;

import cn.iocoder.yudao.framework.business.basic.pojo.po.BaseEntity;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.mybatis.core.type.StringListTypeHandler;
import cn.iocoder.yudao.framework.thirdparty.zxhx.dto.ZXHXSpuDetailsRespDTO;
import cn.iocoder.yudao.framework.validation.Discount;
import cn.iocoder.yudao.framework.validation.Percent;
import cn.iocoder.yudao.module.api.supply.enums.SupplyDataSourceEnum;
import cn.iocoder.yudao.module.api.supply.enums.SupplySpuStatusEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.List;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  供应链选品库
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/03/11
 */
@TableName(value = "product_supply_selection", autoResultMap = true)
@Data
public class ProductSupplySelection extends BaseEntity {

    /**
     * 来源: 0-自有、1-甄新汇选
     *
     * @see SupplyDataSourceEnum
     */
    private Integer source;

    /** 产品编号 */
    private Long spuId;

    /** 产品名称 */
    private String spuName;

    /** 产品主图 */
    private String spuPicUrl;

    /** 产品三方链接，如京东商品详情页地址 */
    @TableField(value = "spu_3rd_link")
    private String spu3rdLink;

    /** 分类编号 */
    private Long categoryId;

    /** 分类名称 */
    private String categoryName;

    /** 品牌编号 */
    private Long brandId;

    /** 品牌名称 */
    private String brandName;

    /** 单位名称，如：件 */
    private String unitName;

    /** 是否多规格 */
    private Boolean multiSpec;

    /** 成本成本价，单位：分 */
    private Integer costPrice;

    /** 建议零售价，单位：分 */
    private Integer marketPrice;

    /** 库存 */
    private Integer stock;

    /** 利润百分比，0-100之间的小数 */
    @Percent
    private Double profitPercent;

    /** 折扣，0-10之间的小数 */
    @Discount
    private Double discount;

    /** 规格编号，多个之间逗号分隔 */
    @TableField(typeHandler = StringListTypeHandler.class)
    private List<Long> skuIds;

    /**
     * 状态: 1-已下架、2-已上架
     *
     * @see SupplySpuStatusEnum
     */
    private Integer status;

    /** 快照数据，JSON格式 */
    private String snapshot;

    /** 产品详情 */
    @TableField(exist = false)
    private ZXHXSpuDetailsRespDTO spuDetails;

    @SuppressWarnings("unused")
    public ZXHXSpuDetailsRespDTO getSpuDetails() {
        if (!JsonUtils.isJson(snapshot)) {
            return null;
        }
        return JsonUtils.parseObject(snapshot, ZXHXSpuDetailsRespDTO.class);
    }

}
